package com.example.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 欺诈风险检测结果
 * 
 * @author system
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class FraudRiskResult {

  /**
   * 用户地址
   */
  private String userAddress;

  /**
   * 风险评分(0-100)
   */
  private Integer score;

  /**
   * 风险等级：0-低风险，1-中风险，2-高风险
   */
  private Integer riskLevel;

  /**
   * 风险类型：1-身份冒用，2-资金异常，3-地域冲突
   */
  private Integer riskType;

  /**
   * 风险类型描述
   */
  private String riskTypeDesc;

  /**
   * 风险证据摘要
   */
  private String evidenceSummary;

  /**
   * 详细证据列表
   */
  private List<String> evidenceDetails;

  /**
   * 建议处置措施
   */
  private String suggestedAction;

  /**
   * 检测时间
   */
  private LocalDateTime detectionTime;

  /**
   * 用户资料，用于风险处理
   */
  private UserProfile userProfile;

  private String riskLevelDesc;

  /**
   * 获取风险等级描述
   */
  public String getRiskLevelDesc() {
    switch (riskLevel) {
      case 0:
        return "低风险";
      case 1:
        return "中风险";
      case 2:
        return "高风险";
      default:
        return "未知风险";
    }
  }

  /**
   * 根据评分计算风险等级
   */
  public static Integer calculateRiskLevel(Integer score) {
    if (score < 30) {
      return 0; // 低风险
    } else if (score < 70) {
      return 1; // 中风险
    } else {
      return 2; // 高风险
    }
  }
}